package algo.A03_递归和算法复杂度;

/**
 *  递归：小白正在上楼梯，楼梯有n阶台阶，小白一次可以上1阶，2阶或者3阶，实现一个方法，计算小白有多少种走完楼梯的方式。
 */
public class T10_小白上楼梯_递归 {
    public static void main(String[] args) {
        int N = 3;
        int result = solution(N);
        System.out.println("result = " + result);
    }

    private static int solution(int n){
        if (n == 0){
            return 1;//走完了
        }
        if (n == 1){
            return 1;//只剩下一个楼梯时，只有走一步这种情况
        }
        if (n == 2){
            return 2;//剩下两个楼梯时，可以选择一次走完，也可以选择一次1个楼梯
        }
        return solution(n - 1) + solution(n - 2) + solution(n - 3);
    }
}
